home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr13 / veced100.zip / VECEDIT.DOC < prev    next >
Text File  |  1995-01-19  |  55KB  |  1,152 lines

  1.  
  2.  
  3.  
  4. ▓▓▓▓    ▓▓    ▓▓▓▓▓     ▓▓▓▓     ▓▓▓▓▓    ▓▓▓▓       ▓▓▓▓▓     ▓▓▓▓▓▓▓
  5.   ▓▓     ▓▓  ▓▓        ▓▓       ▓▓        ▓   ▓        ▓          ▓
  6.    ▓▓     ▓  ▓        ▓▓        ▓          ▓   ▓       ▓          ▓
  7.     ▓     ▓   ▓       ▓          ▓         ▓    ▓       ▓          ▓
  8.     ▓▓   ▓     ▓▓▓    ▓           ▓▓▓      ▓▓    ▓      ▓          ▓
  9.      ▓  ▓▓    ▓       ▓▓         ▓          ▓    ▓      ▓          ▓
  10.      ▓  ▓     ▓▓       ▓▓        ▓▓         ▓    ▓       ▓          ▓
  11.       ▓ ▓      ▓        ▓▓        ▓          ▓  ▓        ▓          ▓
  12.        ▓        ▓▓▓▓      ▓▓▓      ▓▓▓▓      ▓▓▓       ▓▓▓▓▓        ▓
  13.  
  14.  
  15. Vecedit vector editing package, first release version.
  16. Vecedit v2.00,   Texedit v1.00,   DOC file v1.00.
  17.  
  18. Copyright 1995, Jason P. Hoerner.  All rights reserved.  Vecedit is
  19. FREEWARE.  As such, no fee may be charged in any way for copying,
  20. downloading, or using Vecedit.  Vecedit may not be included in any 
  21. PD/Shareware pack without prior consent of the author.  The author is not
  22. liable for any damages caused by the use or misuse of Vecedit under any
  23. circumstances.
  24.  
  25.  
  26.  
  27.  
  28. *************************************************************************
  29. *************************************************************************
  30. *************************************************************************
  31.  
  32.                         
  33.                         
  34.                         
  35.                         Table of contents:
  36.  
  37. INTRODUCTION-  WHY USE VECEDIT?
  38.  
  39. SECTION 1- VECEDIT=      VECTOR OBJECT EDITOR
  40.  
  41.         I.    2D editor
  42.                 A.  Basic keyboard commands
  43.                 B.  How the mouse works
  44.                 C.  Editing modes
  45.                 D.  Geometric transformations
  46.                 E.  Copying/ pasting 2D objects
  47.                 F.  Saving 2D objects
  48.                 G.  Additional considerations
  49.  
  50.         II.   Creating vector primitives
  51.                 A.  The prism
  52.                 B.  The pyramid
  53.                 C.  Solids of revolution
  54.  
  55.         III.  Viewing vector primitives
  56.                 A.  The <view> command
  57.                 B.  Global configuration options
  58.  
  59.         IV.   Playing with pretty colors
  60.                 A.  Modifying colors
  61.                 B.  Blending colors
  62.                 C.  Blending for Lambert (lightsource) shading
  63.                 D.  Saving/ loading palettes
  64.  
  65.         V.    File operations
  66.                 A.  Saving objects
  67.                 B.  Loading objects
  68.                 C.  Importing objects
  69.  
  70.         VI.   Wireframe editor
  71.                 A.  Basic keyboard commands
  72.                 B.  How the mouse works
  73.                 C.  Pieces (imported objects)
  74.                 D.  Geometric transformations
  75.                 E.  Deleting polygons/ edges
  76.                 F.  Creating polygons
  77.                 G.  Merging edges- NOT recommended!
  78.                 H.  Creating point-point edges
  79.                 I.  Static information
  80.                 J.  Dynamic information
  81.                 K.  Free form edge creation
  82.                 L.  Constrained edge creation
  83.                 M.  Group points for depth sorting
  84.  
  85.  
  86. SECTION 2- TEXEDIT=      COLOR, TEXTURE, GOURAD SHADING EDITOR
  87.  
  88.         I.    File operations
  89.                 A.  Texture files- important information
  90.                 B.  Loading
  91.                 C.  Saving files
  92.  
  93.         II.   Loading bitmaps
  94.                 A.  The RAW file format
  95.                 B.  Allocation of memory for bitmaps
  96.                 C.  Loading bitmaps
  97.                 D.  Viewing bitmaps
  98.                 E.  Removing bitmaps
  99.  
  100.         III.  3D solid editor
  101.                 A.  Basic keyboard commands
  102.                 B.  How the mouse works
  103.                 C.  Changing polygon colors
  104.                 D.  Texture mapping
  105.                 E.  Gourad shading
  106.                 F.  Dead polygons and creases
  107.                 G.  Removing texture from a polygon
  108.  
  109.  
  110. *************************************************************************
  111. *************************************************************************
  112. *************************************************************************
  113.  
  114.  
  115.                     INTRODUCTION, FOREWORD, ETC.
  116.  
  117.         Hello, Jason P. Hoerner (Grey Cat/ CORE) typing.  What is this
  118. thing you have downloaded?  It is the best non-commercial vector editing
  119. package I know of.  Best of all it is FREEWARE.  Use it and distribute
  120. it any way you like as long as you do not charge money for it and all
  121. original files are kept intact.  Also, if you use Vecedit to create cool
  122. objects for a demo or game, I'd love it if you give me a greeting!
  123.         This package is intended to be a complete editing system for the
  124. creation of vector objects for realtime graphics.  This package does not
  125. do raytracing, nor does it support super huge objects.  The product that
  126. you have is not crippleware--it is identical to the version I am using
  127. here at home.  It took me around 5 months to code both parts of Vecedit.
  128.  
  129. What's C00L about Vecedit?
  130.  
  131.   All graphics are 320x240 Xmode for square pixels
  132.   Support for reasonably large objects (500 polygons).
  133.   Supports three primitives: prisms, pyramids, and solids of revolution
  134.   Importing/ merging objects together
  135.   Complete set of geometric transformations
  136.   Advanced method of depth sorting
  137.   Polygons with arbitrary number of sides
  138.   Special geometric constraints to insure coplanar polygons
  139.   Lightsource (Lambert) shading
  140.   Gourad shading with vertex normals (no crappy depth shading)
  141.   Specialized gourad shading options (creases)
  142.   Texture mapping
  143.  
  144. What suckz about Vecedit?
  145.  
  146.   Doesn't support any common object storage formats- C source is provided
  147.       as a shell for creating a program to convert Vecedit objects to any
  148.       format.
  149.   Has a few minor bugs (not enough error checking)
  150.   Poor user interface (difficult to learn, help is not very good--
  151.       but it is very easy to use and powerful once mastered).
  152.  
  153.  
  154.         I am releasing Vecedit as freeware rather than shareware so that
  155. people who cannot afford 3D Studio (or anything) will have a powerful tool
  156. for creating vector objects for demos.  Also, I think that freeware is a
  157. good thing (greets to Tran--PMODE!).  I do NOT plan on coding support for
  158. any common formats.  I have included some C source to load/convert
  159. objects, and the user can use this source to create a conversion utility.
  160. If you come up with a cool generalized conversion utility, I encourage you
  161. to send it to me for a release with an update of the package.
  162.         I don't really have time to offer extensive support, upgrades, or
  163. advice to anyone using Vecedit.  I may have a future release if I get
  164. enough suggestions.  I also may create a FAQ or updated DOC file for the
  165. editor, so feel free to send me questions by Email.  Don't expect a
  166. personal response though.  Alternatively, questions may be posted to the
  167. pc demo newsgroup (comp.sys.ibm.pc.demos) on Usenet (preferred).  I will
  168. try to respond to these as long as I am in school.  My signature is:
  169.  
  170.  
  171.                 Jason P. Hoerner
  172.                 jhoerner@umr.edu
  173.                 (Grey Cat/ CORE)
  174.  
  175.  
  176.         The use of vecedit requires a basic knowledge of 3D graphics.  I
  177. would recommend knowing about 3D cartesian coordinates, backface culling
  178. principles, and cross products (vector products).  Learning to use 
  179. Vecedit will require several hours of effort.  Following are some
  180. abbreviations I commonly use:
  181.  
  182. Polys= polygons         Normals= normal vectors         Points= vertices
  183.  
  184.         Although I had announced a 3D animation package to be included
  185. with Vecedit, I decided that it wasn't ready to be released (a lot of
  186. bugs).  This animation program will probably be released in a few weeks or
  187. whenever I get around to it.
  188.  
  189.         I encourage you to give Vecedit a try.  I am sick of seeing demos
  190. with objects that are ripped off.  Vecedit is extremely powerful and can
  191. create anything you can imagine.  Another advantage of vecedit is that
  192. it's MUCH cheaper than 3d-studio!  Look out for CORE's upcoming demo (to
  193. be released at the NAID demo compo in April 1995).  It will feature many
  194. cool objects created in Vecedit!
  195.  
  196.  
  197. *************************************************************************
  198. *************************************************************************
  199. *************************************************************************
  200.  
  201.  
  202. SECTION 1--  VECEDIT-  THE VECTOR EDITOR
  203.  
  204. The purpose of the vector editor is to allow the creation of vector
  205. objects.  A vector object is defined as an object composed of points and
  206. flat polygons.  In my vector editor, the primitive is an edge.  Each edge
  207. is defined by the two points it is connected to.  Also, each edge can be
  208. connected to polygons.  The reason for this choice of data structure
  209. is that my vector engine is based on a scanline algorithm.  The basic
  210. strategy for creating a vector object is to create all the edges of the
  211. object and then connect polygons to the resulting framework.  Before
  212. getting into the advanced stuff, we should start with the built-in
  213. primitive objects which are useful as building blocks for more complicated
  214. objects.
  215.  
  216.  
  217. *************************************************************************
  218.  
  219. I.  2D editor
  220.  
  221. The 2D editor is an extremely simple tool used to create flat geometric 
  222. shapes.  Flat geometric shapes are used to create primitive objects.
  223. Everything is an integer in the editor.  Do not try to feed floating
  224. point numbers when asked for input!
  225.  
  226. A.  Basic keyboard commands
  227.         
  228.         'D'=  input a description of the 2D object (up to 20 chars).
  229.               The description is saved in 2D object save files.
  230.         
  231.         'G'=  access global 2D editing functions.  These functions are
  232.               the geometric transformations and object copy/paste.
  233.         
  234.         'M'=  change the mode (affects the way the mouse behaves).
  235.  
  236.         'O'=  change 2D object being edited (kind of worthless idea--
  237.               normally you only edit one object anyway).
  238.  
  239.         'P'=  manually create a point at a specified location.  Useful
  240.               only if your mouse is too sensitive or something.
  241.         
  242.         'Q'=  quit 2D editor.  Q almost always works to quit out of
  243.               something in any of the editors.
  244.  
  245.         'X'=  also quit out of 2D editor.  Use 'Q' instead, probably.
  246.  
  247.         ESC=  this will quit too.  This will work anywhere in the vector
  248.               editor.
  249.  
  250.         'S'=  change the snap of the mouse.  Use this to align the mouse
  251.               motion to a given integer multiple.
  252.    
  253.         Arrow keys=  move coordinate system around
  254.  
  255. B.  How the mouse works
  256.         The thing to remember when using the mouse is that the left
  257. button CREATES NEW POINTS.  The right mouse button SNAPS TO THE NEAREST
  258. EXISTING POINT.  A note about clicking in the mouse routines:  whenever
  259. clicking, the routines respond to the click and will not click again until
  260. the button is released.
  261.  
  262. C.  Editing modes
  263.         There are four editing modes (selected by pressing 'M').  These
  264.         modes affect what the right mouse button does in editing:
  265.  
  266. mode 0=  connecting stuff
  267.         This mode is used when creating edges.  To create an edge, use
  268.         this mode.  Right click on an existing point.  Then you have two
  269.         options.  Right click on another existing point to create a point
  270.         to point edge.  Left click to create a new point and the edge
  271.         will be connected to the new point.
  272.  
  273. mode 1=  delete point
  274.         Right click on an existing point and the point and all edges
  275.         connected to the point are deleted.
  276.  
  277. mode 2=  delete edge
  278.         Right click on the two points of an edge and it will be deleted.
  279.  
  280. mode 3=  move point
  281.         Right click on a point to select it to be moved.  Left click on
  282.         the location you want to move the point to.
  283.  
  284. D.  Geometric transformations
  285.         These are accessed through the global options ('G' key).  
  286. Everything is self-explanatory except the scaling.  In scaling you have
  287. the option of inputting fractions instead of integers, i.e.  "3/4".  It
  288. even checks for divide by zero (whoopee).  Note that for ratios bigger 
  289. than 1, improper fractions (such as 9/7) should be used.  Normal integers
  290. work fine as well.
  291.  
  292. E.  Copying/ pasting 2D objects
  293.         These options are also accessed through the global options.  The
  294. first object is object zero.  Once a 2D object is edited, the next object
  295. is initialized.  So if you do something with the object zero, object 1 can
  296. then be accessed.  These commands are also self explanatory.  Copying is
  297. useful if you mess up a 2D object and want to dissect it without losing
  298. the original.
  299.  
  300. F.  Saving 2D objects
  301.         This is done through the save/load 2D objects menu option in the
  302. main menu.  When saving objects, DO NOT INCLUDE AN EXTENSION!  To select 
  303. items in the menu for loading (this applies to the 3D object loading code
  304. as well), the following keys are used:
  305.  
  306.         UP/DOWN ARROWS=  move up or down the list
  307.         Number keys=  move to multiple of 10 (instead of PGUP/PGDN)
  308.         ENTER=  select object to load
  309.         PGUP/PGDN=  pageup or pagedown
  310.  
  311. G.  Additional considerations
  312.         What kind of objects do you need to create in the 2D editor?  Most
  313. of the time you will want convex objects because they are easier to depth
  314. sort.  There are ways to depth sort non convex shapes as well, although
  315. it requires some work.  There are three types of useful 2D objects:
  316.  
  317.         1.  Closed objects- closed geometric shapes.  Made up of an equal
  318.                             number of points and vertices.  Used to create
  319.                             pyramids or prisms.
  320.  
  321.         2.  Open polylines- A polyline with TWO ends.  NOT closed.  There
  322.                             should be one more vertex than edges.  Used to
  323.                             create "totem" solids of revolution (such as
  324.                             chess pieces).  The polylines will be rotated
  325.                             about the Y-axis on the screen.  Thus, all the
  326.                             points must have positive X coordinates.  The
  327.                             edges of the polyline should be horizontally
  328.                             simple, meaning a horizontal line drawn across
  329.                             the screen will cross only one edge.  If the
  330.                             polyline is not horizontally simple, it is
  331.                             harder (but not impossible) to depth sort.
  332.  
  333.         3. Torus polylines- A polyline which is convex and may or may not
  334.                             be closed.  These also have one more vertex
  335.                             than edges.  Used to create toruses.  The key
  336.                             to creating these is to use the left mouse
  337.                             button to create a second point on top of an
  338.                             existing point when making the last edge.
  339.                             If the polyline is not closed, then you will
  340.                             end up creating a torus with the middle filled
  341.                             in.  The same rules apply as in 2 for the
  342.                             coordinates of rotation.
  343.  
  344. Following is another marvellous example of my ASCII art (did you like the
  345. title :).  The diagram below illustrates type 2 and type 3 polylines.
  346. Double lines represent the Y-axis.  Note that no base is needed on the
  347. polyline in the example of #2.  The totem solid of revolution creator adds
  348. bases to the object if needed.  The asterisk represents a double point.
  349. Two points are required to satisfy the requirements.  Each edge next to
  350. the asterisk is connected to a DIFFERENT point.  Violate the rules and
  351. the program might crash!
  352.  
  353. Example of #2                    Example of #3
  354.    ║                                ║
  355.    ║\                               ║ 
  356.    ║ \                              ║         -----
  357.    ║  \                             ║        /     \
  358.    ║  │                             ║       /       \
  359.    ║  │                             ║      /         \
  360.    ║  /                             ║     *           >
  361.    ║ /                              ║      \         /
  362.    ║/                               ║       \       /
  363.    ║\                               ║        \     /
  364.    ║ \                              ║         -----
  365.    ║  ──┐                           ║
  366.    ║    │                           ║
  367.    ║    │  7 points, 6 edges        ║        7 points, 6 edges
  368.  
  369.  
  370. *************************************************************************
  371.  
  372. II.   Creating vector primitives
  373.  
  374. A.  The prism
  375.         Select the appropriate selection in the main menu.  You will then
  376. have to enter in a bunch of information:
  377.    
  378.         1.  Object number- typically this will be the default of zero
  379.    
  380.         2.  Base color- color of lower base of prism.  Colors range
  381.                         from 0..255.  Zero is the background.  255 is
  382.                         reserved as an editor color.  If you are doing
  383.                         shading, the colors are grouped by 32's.  0..31
  384.                         is the first set of colors.  32..63 is the second
  385.                         set of colors, etc.  You can't change the number
  386.                         of shades used for shading (I like 32 colors).
  387.    
  388.         3.  Top Base color- color of upper base of object
  389.  
  390.         4.  Side colors of object- colors around sides of prism
  391.  
  392.         5.  Scale numerator- a scale factor for the polyline.  This is
  393.                         the numerator for the scale factor.  In my
  394.                         coordinate system, everything is divided by 4
  395.                         during normalization (to reduce roundoff in
  396.                         rotation).  Thus, I recommend making the size
  397.                         4 times larger than you want the object to appear
  398.                         on screen.
  399.         
  400.         6.  Scale denominator- obvious.
  401.    
  402.         7.  Vertex coordinates- The X,Y,Z coordinates of the center of
  403.                         the upper base of the object.  Z must be
  404.                         positive.  The bottom base is centered at 0,0,0.
  405.                         The X and Y can be put off center to create
  406.                         oblique prisms.
  407.  
  408.    
  409.         8.  Top base scale factor- The top base can be scaled to be a
  410.                         different size than the bottom base.  Top base
  411.                         scaling is applied after the polyline scaling of
  412.                         parts 6 and 7.
  413.    
  414.         9.  Flip order?- Totally random chance.  After you create
  415.                         a prism, you simply must look at it and see if it
  416.                         looks right (see the view option, section III).
  417.                         If it doesn't look right the first time, enter
  418.                         the opposite of what you did the first time.  The
  419.                         reason for this is the inability of the prism 
  420.                         routine to figure out which way the normals should
  421.                         go for backface culling.
  422.  
  423. If you get an error message saying "ERROR CREATING POLYLINE FROM 2D
  424. OBJECT, SORRY!" this means that the 2D object was designed incorrectly.
  425. See design guidelines in Section I-G.  The error checking will not
  426. necessarily catch all errors!
  427.  
  428. B.  The pyramid
  429.         The pyramid is about the same as the prism, except a little
  430. simpler.  The options are all the same except that there is no top base
  431. scale factor because the top of the pyramid is the vertex.
  432.  
  433. C.  The solid of revolution
  434.         This is the most complicated primitive.  There are two types of
  435. solids of revolution, "totem" solids of revolution and "torus" solids of
  436. revolution.  An example of a "totem" is a pawn chess piece.  An example
  437. of a "torus" is a torus.  Once again, there is crap to enter:
  438.  
  439.         1.  Object number- same as above.
  440.  
  441.         2.  Low base color- the color of the base with the lower Y 
  442.  
  443.         3.  High base color- the color of the base with the higher Y
  444.  
  445.         4.  Side colors- pretty obvious.
  446.    
  447.         5.  Scale numerator/denominator- scaling for the polyline
  448.  
  449.         6.  Steps- number of steps for the solid of revolution.  If you
  450.                         make this two big you might crash the program
  451.                         by overflowing the limit on polygons.
  452.  
  453.         7.  Group point creation (Totem/ Stepped)- You will find out
  454.                         later what group points are.  Choose stepped if
  455.                         you want to make a torus, otherwise choose totem.
  456.  
  457. If you choose Stepped, some more extra information is needed:
  458.         
  459.         8.  Kill bases- this determines whether or not you have a torus
  460.                         that's filled in the middle.  Respond 'Y' to
  461.                         have a torus with no middle
  462.    
  463.         9.  Flip order- Once again, look to see if it is right.
  464.    
  465.  
  466. *************************************************************************
  467.  
  468. III.  Viewing vector primitives
  469.  
  470. A.  The <view> command
  471.         If you have a vector object loaded or created, you can select the
  472. "view" option by pressing 'V' in the main menu.  The following keys are
  473. used in the view mode:
  474.  
  475.         ARROW KEYS=  change position of object
  476.         '+/-'=  change distance to object
  477.         'T'=  determine the frame rate of the object-wait several seconds
  478.         'X' or 'Q'=  exit from view mode
  479.  
  480. B.  Global configuration options
  481.         Press 'G' in the main menu to get to these.  There are some
  482. statistics and a couple of options.  The most important option is the
  483. shading flag, which turns lightsource shading on or off.  Initially
  484. shading is off.  The window size for view mode can also be set here.
  485. Also, there is another option, the global poly color and automatic poly
  486. coloring option.  These options affect how polygons are created in the
  487. wireframe editor.  If automatic coloring is on, the global color is
  488. automatically applied to polygons that are created (instead of having the
  489. user manually enter the color).
  490.  
  491.  
  492. *************************************************************************
  493.  
  494. IV.   Playing with pretty colors
  495.         This stuff is for playing with the palette.  The same palette
  496. functions are also implemented in the Texedit executable.
  497.  
  498. A.  Modifying colors
  499.         The numbers above the palette represent the color number 0..255.
  500. The part of the palette that is visible may be shifted by pressing the
  501. left or right arrow keys.  To select a color to modify, press the number
  502. BELOW the palette color.  Press 'R', 'G', or 'B' to select red, green,
  503. or blue to modify.  The left and right arrows modify the color value by 1.
  504. The up and down arrows modify the color value by 5.  Press 'S' to save the
  505. modified color or 'Q' to cancel the modifications.
  506.  
  507. B.  Blending colors
  508.         The color blending feature linearly interpolates color shades
  509. between two given colors.  Simply input the first and last color indexes.
  510.  
  511. C.  Blending for Lambert (lightsource) shading
  512.         For Lambert shading, the colors should be blended from 1 to 31,
  513. 33 to 63, 65 to 95, etc.  The "zero" colors (0,32,64, etc) are not used
  514. by the shading algorithm.  The shading algorithm works by ANDing the color
  515. value with 11100000b to clear the low 5 bits.  A color value from 1..31 is
  516. calculated and ORed with the color to produce the final value.
  517.  
  518. D.  Saving/ loading palettes
  519.         Select the save or load option.  The file load menu is the same
  520. as that for saving or loading 2D files.  Palettes are for 18 bit colors,
  521. i.e. the palette numbers are from 0..63 and are stored RGB, RGB, etc.
  522.  
  523.  
  524. *************************************************************************
  525.  
  526. V.    File operations
  527.  
  528. A.  Saving objects
  529.         This is the same as saving for 2D objects.  I recommend saving
  530. often should the rare crash occur (actually, every recorded crash in the
  531. latest version has been a result of bad input by the user :).
  532.  
  533. B.  Loading objects
  534.         Same as for 2D objects of course.
  535.  
  536. C.  Importing objects
  537.         Importing objects is an EXTREMELY useful technique.  Importing an
  538. object loads another object into the current one.  Each imported object
  539. is known as a "piece" and can be geometrically manipulated separately in
  540. the 3D wireframe editor.  Importing an object is done the same way as
  541. loading.  If no object is loaded yet, importing is the same as loading.
  542.  
  543.  
  544. *************************************************************************
  545.  
  546. VI.   Wireframe editor
  547.         The wireframe editor is the most important and complicated part
  548. of the vector editor.  The wireframe editor is designed to generate and
  549. edit arbitrary objects.  The wireframe editor can not be entered unless
  550. there is an object loaded.  If you like starting from scratch on objects,
  551. you can create a dummy object with one polygon to build off of.
  552.         It's time for some more comments about how stuff is created in
  553. this editor.  The basic primitive is the edge.  Becoming proficient at
  554. creating edges is vital to creating anything cool.  Polygons are created
  555. by specifying the edges to which the poly should be connected.
  556.  
  557.  
  558. A.  Basic keyboard commands
  559.         Here is a complete list of all the keys used in the wireframe
  560. editor.  The exact functions of the keys will be elaborated later on.
  561. Keys used in "Edge Creation Mode" are not on this list.
  562.  
  563.         '+' and '-'=  move object closer or further away.
  564.  
  565.         ARROW KEYS=  The arrow keys have two functions.  They can be
  566.                         used to either rotate or translate the object.
  567.  
  568.         'A'=  toggles the function of the arrow keys
  569.  
  570.         'C'=  enter edge creation mode
  571.  
  572.         'D'=  used for deletion of edges or polygons
  573.  
  574.         'F'=  Finish it- deletes disconnected edges and normals (reducing
  575.                 size of output file).  WARNING- DON'T DO THIS UNTIL YOU
  576.                 ARE DONE WITH THE OBJECT!
  577.                   
  578.         'H'=  Toggle backface culling of edges
  579.  
  580.         'G'=  Global editing options (geometric transforms/ normal
  581.                 recalculation).
  582.  
  583.         'M'=  Merge edges (not a recommended feature).
  584.  
  585.         'N'=  Create a new polygon
  586.  
  587.         'P'=  Switch pieces (imported objects)
  588.  
  589.         'R'=  Regroup-  changes group points (used for depth sorting).
  590.  
  591.         'U'=  Unmark a single edge or polygon
  592.  
  593.         'X', 'Q', ESC=  Quit from wireframe editor
  594.  
  595.         SPACE BAR=  Cycle marked edge or polygon- try it!
  596.  
  597. B.  How the mouse works
  598.         In the wireframe editor, the left mouse button is used to select
  599. edges.  Edges are marked by selecting the two points that make up the
  600. edge.  The right mouse button is used to select polys.  Polys are marked
  601. by selecting any three different points that make up the poly.  The
  602. selection routines are designed to snap to the nearest point.  There are
  603. many circumstances where it is necessary to mark more than one edge or
  604. polygon.  The key thing to remember is that edges and polys cannot be
  605. marked at the same time.  If you have been marking polys (with the right
  606. mouse button) and then click on a point (with the left mouse button),
  607. all polys will be unmarked, so be careful!  Another nifty feature:  when
  608. in the wireframe editor (when not in edge creation mode), a set of
  609. connected edges may be specified by clicking once on each adjacent point
  610. in order.  Basically, after an edge is marked, the SECOND point of the
  611. edge is remarked.  Thus, the next point marked can specify another edge.
  612. This feature is useful when marking a set of edges for a polygon.
  613.  
  614. C.  Pieces (imported objects)
  615.         Whenever an object is imported into the current object, the two
  616. parts can be operated on separately.  The different parts of an object
  617. are called "pieces."  Whenever the object is saved, the piece information
  618. is NOT retained.  Also, when any destructive editing operations are
  619. performed, the piece information is NOT retained. Examples of destructive
  620. operations are deleting polygons or edges, using the "finish it" command,  
  621. and merging edges.  It is recommended that once pieces are created, you 
  622. immediately position them where they belong using geometric
  623. transformations (discussed below).  To switch between the main object and
  624. different pieces simply press the 'P' key.  There can be up to 20 pieces
  625. at a time.
  626.  
  627. D.  Geometric transformations
  628.         Geometric transformations always operate on the currently visible
  629. piece or the main object.  The transformations are described below.
  630.  
  631.         1.  'M'=  Mirror-  Mirroring can be done on the X, Y, or Z
  632.                         coordinates.  This is self-explanatory.
  633.          
  634.         2.  'R'=  Rotation-  Rotation can be done about the X, Y, and Z 
  635.                         axes.  I recommend only rotating about one axis
  636.                         at a time, otherwise the effect of the rotation
  637.                         is difficult to predict.  The rotation order
  638.                         is X, Y, then Z.  After rotation, it is
  639.                         recommended that normals are recalculated (see
  640.                         below).  The angles range from 0..1024
  641.                         representing a complete circle.  Press enter to
  642.                         cancel the rotation.
  643.  
  644.         3.  'S'=  Scaling-  Scaling is the same as in 2D.  Scaling can
  645.                         be done on all three axes.  Fractions (not 
  646.                         floating point!) can be entered for scaling
  647.                         factors.  If asymmetric scaling is done
  648.                         (different scale on the axes), it is
  649.                         recommended that normals are recalculated.
  650.                         Pressing enter for the Y or Z scale factor will
  651.                         cause the program to use the scale entered for
  652.                         the X scale.  The best way to cancel scaling is
  653.                         to enter a division by zero, i.e. "1/0".
  654.  
  655.         4.  'T'=  Translation-  Self explanatory.  Note that in my
  656.                         coordinate system, the positive 'X' axis points
  657.                         to the right, the positive 'Y' axis points
  658.                         DOWNWARD, and the positive 'Z' axis points into
  659.                         the screen.
  660.  
  661. E.  Deleting polygons
  662.         Now is a good time to introduce some new concepts about the
  663. wireframe editor.  There are three different colors of edges in the
  664. editor.  Purple edges are edges which are connected to two polygons.
  665. Yellow edges are connected to only one polygon.  Red edges are connected
  666. to zero polygons.  Marked edges or polygons are highlighted by white.
  667. Why does this information matter?  The "Finish it" command will delete
  668. all red edges in a drawing (these are not necessary).  Thus, make sure
  669. not to "Finish it" if there are any red edges you want to keep.
  670.         Deleting polygons is very simple.  All you do is mark the polygon
  671. you want to delete and press 'D'.  If there is more than one polygon
  672. marked, only the first one marked is deleted (and all others are
  673. unmarked).
  674.         Deleting edges is the same.  Edges to be deleted must be red or
  675. you will not be allowed to delete them.  Simply mark the edge and press
  676. 'D'.
  677.  
  678. F.  Creating polygons
  679.         Creating polygons is almost as easy as deleting.  Simply mark the
  680. edges that are to be part of the polygon.  An easy way to see where polys
  681. need to be created is by looking at the color.  A group of yellow or red
  682. edges might need a polygon created (if you delete a polygon off one of the
  683. primitive objects, you will notice how the color helps).  Polygons CAN be
  684. created using edges that are already purple.  The program will generate
  685. a new edge on the old one for the extra polygon.
  686.         In order to allow the program to calculate the normal vector of
  687. the new polygon, you must define the first two edges according to the left
  688. hand rule.  This means that when you curl the fingers of your left hand
  689. along the first marked edge toward the second marked edge, the normal
  690. vector will be in the direction of your thumb.  Here is a cheesy diagram:
  691.  
  692.   The normal of this polygon            The normal of this polygon
  693.   is into the page/screen.              will be out of the page/screen.
  694.               _______
  695.              /       |                           /\
  696.      Edge 1 /        |                   Edge1  /  \  Edge 2
  697.            /         |                         /    \
  698.           /          |                        /      \
  699.          <           |                       /       /
  700.           \          |                       \      /
  701.    Edge 2  \         |                        \    /
  702.             \________|                         \  /
  703.                                                 \/
  704.  
  705. Note: if the first two edges you mark are collinear, then the program
  706. will crash.  You've been warned!
  707.  
  708. G.  Merging edges
  709.         Merging edges is an old feature that is not very useful (there are
  710. other ways to do the same thing that are faster).  I will briefly explain
  711. how it works.  In order to merge edges, you must have two separate edges
  712. which exactly overlap and are both yellow.  Typically, this can happen
  713. when importing two pieces which you want to fit together.  Mark the two
  714. edges and hit 'M' to merge them into one edge.
  715.  
  716. H.  Creating point-point edges
  717.         Now is a good time to explain edge creation mode.  To enter edge
  718. creation mode, press 'C' in the wireframe editor.  Press 'C' again to
  719. leave edge creation mode.  Following is a list of the keys that are
  720. specific to this mode:
  721.  
  722.         '1'=  Select point-point edge creation mode
  723.  
  724.         '2'=  Select free edge creation mode
  725.  
  726.         '3'=  Add static information
  727.         '#'=  Remove static information
  728.  
  729.         '4'=  Add dynamic information
  730.         '$'=  Remove dynamic information
  731.  
  732.         '5'=  Add free edge creation constraints
  733.         '%'=  Remove constraints
  734.  
  735.         'E'=  Create edge (either point-point or free)
  736.  
  737.         'S'=  Save (keep) a free edge that is being created
  738.  
  739.         'T'=  Trash (do not keep) a free edge that is being created
  740.  
  741. Edges must be connected to two points.  The point-point edge creation mode
  742. is for creating an edge between two existing points.  Mark two points with
  743. the RIGHT mouse button while in point-point edge creation mode.  Press 'E'
  744. to create the edge.
  745.  
  746. I.  Static information
  747.         Static information is basically geometric information that can be
  748. obtained about the object being created.  The reason why it is called
  749. static is because it is information about parts of the object that already
  750. exist.  The next section, dynamic information, concerns geometric
  751. relationships between a new edge being created and the rest of the object.
  752. Static information is created in the free edge creation mode by pressing
  753. '3' and can be removed by pressing '#' (note that #= SHIFT + 3, at least
  754. on my keyboard).  What type of information created depends on what is
  755. marked:
  756.  
  757. SINGLE POINT=  returns the location in 3D coordinates of the marked point.
  758.  
  759. LEFT CLICK TWO POINTS=  returns the distance between the two points.  Note
  760.                         that this works even if the two points are an
  761.                         edge.
  762.  
  763. RIGHT CLICK TWO POINTS=  returns the vector between the two points.
  764.  
  765. MARK TWO EDGES=  returns the dot product between the two edges.  The dot
  766.                  product is scaled -1000..1000, so divide by 1000 to get
  767.                  the normalized dot product.
  768.                   
  769. MARK FOUR EDGES=  returns the dot product between the normal vectors of
  770.                   the planes defined by the 4 edges.  The first two edges
  771.                   define one plane and the third and fourth edges define
  772.                   the other plane.
  773.  
  774. What can you do with this information?  Here are some suggestions.  The
  775. location of a single point can be useful for centering the object about
  776. a certain point (use translation).  The distance between two points is
  777. useful for creating new edges that have a similar length to existing
  778. edges.  The vector between two points is useful for figuring out how to
  779. translate the pieces of an object to align them in some way.  Up to
  780. 30 pieces of static info may be displayed at a time (I recommend writing
  781. down important numbers on scratch paper while you work).
  782.  
  783. J.  Dynamic information
  784.         Dynamic information is information given about an edge that is
  785. being created in free edge creation mode.  The information is updated as
  786. a free edge is being created, hence the name dynamic.  Dynamic edges are
  787. created by pressing '4' and removed by pressing '$'.  Following are the
  788. types of dynamic information, based on what is marked:
  789.  
  790. SINGLE POINT=  returns the distance from the single marked point
  791.  
  792. SINGLE EDGE=  returns the dot product between the new edge being created
  793.               and the marked edge.
  794.  
  795. TWO EDGES=  returns the dot product between the new edge being created and
  796.             the normal vector of the plane defined by the two marked
  797.             edges.
  798.  
  799. Some uses of dynamic information?  The distance between points can be used
  800. to triangulate the position of the endpoint of an edge.  The angle (dot 
  801. product) between an edge can be used to produce stuff at a certain angle.
  802. The angle between the edge and a plane is useful for making an edge that
  803. is perpendicular to the plane (line it up so the angle between the edge
  804. and the plane normal is zero degrees, corresponding to a dot product of
  805. plus or minus 1.  Up to 30 pieces of dynamic info may be displayed at a
  806. time.
  807.  
  808. K.  Free form edge creation
  809.         Free form edge creation is the creation of an edge from an
  810. existing point and a new point.  The new point is specified in 3D space
  811. using the mouse.  To enter free form edge creation mode, right click on
  812. an existing point.  Then press 'E' to create the edge.  A new command bar
  813. will appear on the bottom of the screen with numbers '1' through '8'.
  814. Numbers '1' through '6' are used to select basic coordinate motion.  When
  815. in these motion modes, the mouse is used to move the edge around.  Moving
  816. up or right will increase coordinates, while down and left will decrease
  817. coordinates.  If you want to move the mouse around freely, press '7'.  In
  818. order to create good edges in the free mode, you should rotate the object
  819. around so you can see how the edge relates to the object.  Also, dynamic
  820. information can be very helpful for figuring out the placement of edges.
  821. Option '8' allows one to change the length of an edge without affecting
  822. its direction.  When the edge is where you want it, press 'S' to save it.
  823. Press 'T' to trash the edge if you want to cancel.
  824.  
  825. L.  Constrained edge creation
  826.         Constrained edge creation is the most powerful and important tool
  827. for the creation of edges.  Constrained edges is the tool which allows
  828. the creation of parallel lines and coplanar multisided polygons.
  829. Constraints force an edge to meet some geometric requirements.
  830. Constraints are chosen by pressing '5' and cancelled by pressing '%'.
  831. There are two types of constraints:
  832.  
  833. EDGE CONSTRAINT=  Mark one edge.  Any free edge created will be parallel
  834.                   to this edge.
  835.  
  836. PLANE CONSTRAINT=  Mark two edges.  Any free edge created will have its
  837.                    second endpoint contained in the plane defined by the
  838.                    two edges.
  839.  
  840. The geometrically inclined will note that constraining by a plane
  841. eliminates one degree of freedom of the location of the endpoint.
  842. Constraining by an edge eliminates two degrees of freedom.  Any valid
  843. combination of constraints (no more than three degrees of freedom taken
  844. from the end point) is allowed.  The table below explains it:
  845.  
  846. Constraints:            Deg. Freedom            Motion available:
  847. ─────────────────────────────────────────────────────────────────
  848. PLANE                       2                   [XY],[XZ],[YZ]
  849. PLANE-PLANE                 1                   [X],[Y],[Z]
  850. PLANE-PLANE-PLANE           0                   CREATED AUTOMATICALLY
  851. EDGE                        1                   [X],[Y],[Z]
  852. EDGE-PLANE                  0                   CREATED AUTOMATICALLY
  853.  
  854. Note that if moving in a certain direction causes a huge change in the
  855. location of the edge endpoint, the routine may refuse to move it in that
  856. direction.  If this happens, move it along some other axis!  Learning to
  857. use constraints is the ONLY way to become efficient at creating objects
  858. and to create coplanar points for polygons.
  859.         Once again, choose 'S' to save it or 'T' to trash it.  Note that
  860. the length cannot be modified when working with constrained edges.
  861.  
  862. M.  Group points for depth sorting
  863.         Group points are a special invention of mine to improve the
  864. effectiveness of a simple depth sorting routine.  I have not heard of
  865. anyone doing anything similar, so I will give a detailed explanation of
  866. the concept.
  867.         Normal depth sorting methods work in one of a few ways.  One way
  868. is to depth sort polygons based on an arbitrarily chosen vertex of the
  869. polygon.  A second method is to choose to sort by either the farthest or
  870. nearest vertex of the polygon.  A third method is to sort based on an
  871. average of the vertices of the polygon.  A fourth method is to do a full
  872. painter's algorithm which is extremely slow, maybe some sort of BSP-
  873. Tree which is extremely complicated, or a z-buffer algorithm which is
  874. also kind of slow.  The first three options above rarely produce correct
  875. depth sorting, even within reasonably simple objects.  The last few are
  876. difficult to implement and slower.
  877.         The group point idea is to physically specify the exact point that
  878. a polygon or group of polygons will be sorted by.  It is possible to
  879. create fairly complicated objects doing this that will be consistently
  880. depth sorted from any angle.  The commands for manipulating group points
  881. are given below, followed by some advice on choosing group points.  Note
  882. that in the wireframe editor, the group point of the first marked poly is
  883. displayed in the upper left corner of the screen (bet you were wondering
  884. what those coordinates were).  The key to press to modify group points is
  885. 'R', meaning "Regroup."  There are then three options:
  886.  
  887.         '1'= Combine.  This command is used to combine several polys so
  888.                        they are sorted by the same group point.  At least
  889.                        two polys must be marked.  Each poly after the
  890.                        first is set for the group point of the first.
  891.  
  892.         '2'= New Group.  This command is used to create new groups.  Mark
  893.                          a poly or group of polys.  A new group point will
  894.                          be created at the geometric center of the points
  895.                          that make up the marked polys.  Each of the
  896.                          marked polys will then be set for the new group
  897.                          point.
  898.  
  899.         '3'= Move Group.  This command is used to arbitrarily position a
  900.                           group point.  For this option to work, there
  901.                           must be one polygon and a point marked.  The
  902.                           group point of the polygon that is marked
  903.                           is changed to the point that is marked.
  904.  
  905. Note that since group points can only be moved to where a point exists, it
  906. is normally necessary to create "construction lines," lines for the sole
  907. purpose of providing a point to select as a group point.  Generally,
  908. convex objects work best with a group point in the middle.  Group points
  909. for a complex object should be chosen such that the convex pieces of the
  910. object can be consistently sorted.  This is done by selecting group points
  911. that both lie on a line which is normal to a plane which completely
  912. separates the two objects.
  913.  
  914.  
  915.  
  916. *************************************************************************
  917. *************************************************************************
  918. *************************************************************************
  919.  
  920.  
  921. SECTION 2- TEXEDIT=      COLOR, TEXTURE, GOURAD SHADING EDITOR
  922.         The purpose of Texedit is to change the colors of an object (you
  923. can't see the colors of polys in the vector editor!).  Also, Texedit
  924. is used to gourad shade an object or to put texture maps on the object.
  925. Note that the editor does NOT support both gourad and texture shading at
  926. the same time (although a later version of my engine does :) ).
  927.  
  928.  
  929. *************************************************************************
  930.         
  931. I.    File operations
  932.         This stuff is almost identical to that in the vector editor.  The
  933. only new thing is the texture file.
  934.  
  935. A.  Texture files- important information
  936.         In order to provide texture mapping and gourad shading on my
  937. objects, I use a separate file.  The reason for this is I wanted to keep
  938. the file formats relatively simple.  Also, by having separate files, it
  939. is very easy to get rid of the texture on an object.  Texture files have
  940. an extension of ".TEX" while vector files have an extension of ".VEC".
  941. The two files must have the same name and be in the same directory.  In
  942. order to remove the texture, simply delete the ".TEX" file.  NOTE: Once
  943. gourad shading or texture mapping has been done on an object, it CANNOT
  944. BE GEOMETRICALLY MODIFIED IN VECEDIT.  You MUST delete the texture file
  945. if you want to modify the vector object (otherwise it's definitely going
  946. to crash).
  947.  
  948. B.  Loading files
  949.         Files are loaded the same as in the vector editor.  The loader
  950. will give you a message saying "File AND TEXTURE successfully loaded" if
  951. a texture file was found and loaded, otherwise the standard message,
  952. "File successfully loaded", is given.
  953.  
  954. C.  Saving files
  955.         The editor will only save texture files if texture or gourad
  956. shading has been put on the object.  The colors on normal vector objects
  957. may be freely modified and saved.
  958.  
  959.  
  960. *************************************************************************
  961.  
  962. II.   Loading bitmaps
  963.         The Targa (.TGA) file format is used for bitmaps.  Bitmaps are
  964. required to be a power of 2 across and less than 63K memory.
  965.  
  966. A.  Allocation of memory for bitmaps
  967.         This is kind of tricky because of real mode limitations.  My
  968. original real mode algorithm required that the bitmap for a textured
  969. polygon (texture poly) be in the same segment as the texture poly
  970. interpolation information (to reduce the number of segment register
  971. loads).  Thus, when a bitmap is loaded, it is necessary to declare the
  972. maximum number of polygons that you want to texturize with the same
  973. bitmap (everything is allocated in the same segment).  The bitmap for a
  974. textured polygon is stored in the texture file itself, so the original
  975. bitmap file is no longer needed.  When an object with texture mapping is
  976. reloaded, extra memory is allocated for 10 additional texture polygons.
  977.  
  978. B.  Loading bitmaps
  979.         Loading bitmaps simply involves selecting the file as usual.  Then
  980. simply specify the maximum number of polygons you will want to use the
  981. same bitmap.  Note that the palette for bitmaps is not loaded.  The user
  982. must take care of the palette.
  983.  
  984. C.  Viewing bitmaps
  985.         Choose the bitmap viewing option in the menu.  You can then look
  986. at the bitmaps that have been loaded or are part of the objects.  The '+'
  987. and '-' keys are used to cycle through the bitmaps.  For each bitmap,
  988. the dimensions and number of texture polys used and available is shown.
  989.  
  990. D.  Removing bitmaps
  991.         Deleting a bitmap simply deallocates the memory that the bitmap
  992. and texture polys took up.  A bitmap can only be deleted if it is
  993. connected to zero texture polygons.  Bitmaps that are loaded are NOT saved
  994. in the texture file unless they are on at least one polygon in the object.
  995. Thus, unless memory is a consideration, it is not necessary to delete/
  996. remove bitmaps.
  997.  
  998.  
  999. *************************************************************************
  1000.  
  1001. III.  3D solid editor
  1002.         The 3D solid editor is similar to the wireframe editor.  Many of
  1003. the movement commands are the same.  The difference is that this editor
  1004. works with solid objects.  This editor is designed to allow modification
  1005. of colors and to do texture mapping and gourad shading.
  1006.  
  1007. A.  Basic keyboard commands
  1008.       
  1009.         ARROW KEYS=  rotate or translate the object
  1010.         
  1011.         '+' or '-'=  Move the object closer or further away
  1012.  
  1013.         'A'=  change what the arrow keys do
  1014.          
  1015.         'C'=  change colors on a poly or group of polys
  1016.  
  1017.         'D'=  remove texture mapping or gourad shading from a poly
  1018.          
  1019.         'G'=  Gourad shade the object
  1020.  
  1021.         'L'=  Change visible information about special gourad shading
  1022.               options (explained later)
  1023.  
  1024.         'N'=  Cycle through edges or polys (Next edge or poly)
  1025.          
  1026.         'P'=  Cycle through edges or polys (Previous edge or poly)
  1027.  
  1028.         'R'=  Unmark something selected in the special gourad shading
  1029.               options
  1030.  
  1031.         'S'=  Select the marked edges or polys for special gourad shading
  1032.               options
  1033.  
  1034.         'T'=  Texturize a poly
  1035.          
  1036.         'U'=  Unmark edge or poly
  1037.  
  1038.         'X' or 'Q'=  Quit 3D solid editor
  1039.  
  1040. B.  How the mouse works
  1041.         The behavior of the mouse is similar to that in the 3D wireframe
  1042. editor.  The left mouse button is used to mark edges while the right mouse
  1043. button marks polygons.
  1044.  
  1045. C.  Changing polygon colors
  1046.         To change the colors on polygons, mark a polygon or group of
  1047. polygons and press the 'C' key.  The program will then ask for the new
  1048. color to make the polys.
  1049.  
  1050. D.  Texture mapping
  1051.         To put a texture on a polygon, first you must mark the polygon.
  1052. Then it gets complicated.  Mark a vertex that is part of the polygon.
  1053. This vertex will represent the upper left corner of the bitmap.  Then
  1054. press the 'T' button to add texture to the polygon.  You will then be
  1055. asked "Order (1/2)".  This represents whether the texture on the polygon
  1056. should be clockwise or counterclockwise.  The only problem is that this
  1057. is random, so you'll have to guess.  If it doesn't work the first time,
  1058. select the opposite order you did the first time.
  1059.  
  1060. E.  Gourad shading
  1061.         Gourad shading is automatically done on the full object when 'G'
  1062. is pressed.  There are a couple rules for doing gourad shading:
  1063.  
  1064.         1.  DO NOT gourad shade an object that has already been gourad
  1065.                 shaded or that already has a texture polygon on it.
  1066.  
  1067.         2.  DO NOT attempt to gourad shade an object that has flat double
  1068.                 sided polygons.  The problem is that the Vertex normal
  1069.                 calculations will crash on this (the net result is a
  1070.                 vertex normal that is zero!).
  1071.  
  1072. F.  Dead polygons and creases
  1073.         These are specialized features that my gourad shading algorithm
  1074. can do.  There are some bugs occasionally when you use these features,
  1075. so if it comes out looking wrong, don't use these features (they shouldn't
  1076. crash anyway).  To see what polygons and edges have been selected for dead
  1077. polygons or creases, press the 'L' key (cycles through different
  1078. information).  To take stuff off one of the lists, press the 'R' key.  So
  1079. what do these special features do?
  1080.  
  1081. DEAD POLYGON--  This polygon is a polygon that is not gourad shaded.  This
  1082. polygon will be ignored when calculating vertex normals.
  1083.  
  1084. CREASE--  A crease is a line where the normal gourad interpolation is
  1085. split up to make it look like an object has a sharp edge or crease.  In
  1086. order to have this feature, it is necessary for a gourad shading algorithm
  1087. to have more than one vertex normal corresponding to a given vertex.  It
  1088. is EXTREMELY complicated to get the program to generate something like
  1089. this.  Thus there are some rules about creases:
  1090.  
  1091.         1.  A vertex that has more than four edges connected to it can
  1092.                 have either ALL creases or NO creases.  The problem is
  1093.                 that it is difficult to determine the relationship of the
  1094.                 edges to one another when there are more than four edges
  1095.                 coming to a point.
  1096.  
  1097.         2.  A vertex with three edges connected to it is allowed to have
  1098.                 any of those edges as creases.
  1099.  
  1100.         3.  A vertex with four edges connected to it can have any number
  1101.                 of creases coming out of it.  However, there is a
  1102.                 restriction when there are two edges of the four that are
  1103.                 creases (see next rule).
  1104.  
  1105.         4.  If two of four edges that are connected to a vertex are
  1106.                 creases, then the edges must be opposite one another.
  1107.                 Here is another fabulous ASCII diagram.  The xxxxxxx's
  1108.                 are edges that are creases.  The * is the vertex.
  1109.  
  1110.         Allowed                         NOT Allowed
  1111.          |                                  x
  1112.          |                                  x
  1113.          |                                  x
  1114.          |                                  x
  1115.          |                                  x
  1116. xxxxxxxxx*xxxxxxxxxx                xxxxxxxx*--------
  1117.          |                                  |
  1118.          |                                  |
  1119.          |                                  |
  1120.          |                                  |
  1121.          |                                  |
  1122.  
  1123. If you violate the rules above, one of three things may happen:  you'll
  1124. get lucky and it will still look good, it will look bad, or the program
  1125. will crash.  An example of a use for a crease is to separate the handle of
  1126. a cup from the cup itself.  A second example of a crease is for a chess
  1127. piece, where the neck and head of the chess piece might be separated.  See
  1128. the included cup and pawn examples to see cool creases.
  1129.  
  1130. G.  Removing texture from a polygon
  1131.         To remove texture mapping or gourad shading from a polygon, mark
  1132. the polygon and press 'D'.
  1133.  
  1134.  
  1135. *************************************************************************
  1136. *************************************************************************
  1137. *************************************************************************
  1138.  
  1139. I hope the above file answers all your questions.  If it doesn't, once
  1140. again I prefer posted messages rather than Email.  Fan Email is graciously
  1141. accepted, though :).  If you can't figure something out, experiment!  All
  1142. the keys and features of the editors are listed above, so read the file
  1143. again if something doesn't seem to be working.  Documentation of the
  1144. file formats for ".VEC" and ".TEX" appear in the conversion utility
  1145. source, if you are interested.
  1146.  
  1147. LATER...
  1148.  
  1149. Jason P. Hoerner
  1150. jhoerner@umr.edu
  1151. (Grey Cat/  CORE)
  1152.